<style>


/*危险按钮*/
.bts-danger:hover{
	color: #fff;
    background-color: #c9302c;
    border-color: #ac2925;
}
#whiteList a{
	color: red;
}

/*弹窗*/
.Add_view{
	height: 100px;
    padding-left: 35px;
    padding-top: 35px;
}
.Add_view label{
	margin-right: 10px;
    font-size: 15px;
    font-weight: 100;
}
.Add_view input{
	width: 230px;
}
.Add_view .error{
	border: 1px solid red;
}
.Add_view .correct{
	border: 1px solid #20a53a;
}

/*日志管理*/
.btnTitle{
	font-weight: 100;
    font-size: 16px;
    line-height: 34px;
    height: 34px;
    margin-right: 15px;
    position: relative;
    top: 2px;
}
.whiteList-table{
	margin-top: 10px;
}
/*登录日志表单*/
.viewTwo .whiteList-table{
	overflow-x: hidden;
	height: 500px;
}
.maks{
	background: rgba(39, 39, 39, 0.4);
    position: absolute;
    width: 700px;
    height: 555px;
    z-index: 999;
    overflow: hidden;
}
.boxshow{
	position: absolute;
    height: 150px;
    width: 400px;
    margin-left: -200px;
    margin-top: -75px;
    left: 50%;
    top: 50%;
    z-index: 1000;
    background: #fff;
    padding: 25px 20px;
    overflow: hidden;
}
.btPayment {
    float: left;
    padding: 8px 10px;
    width: 190px;
    height: 100px;
    line-height: 33px;
    text-align: center;
	border-left: 1px solid #ececec;
}
.btPayment .t2{
    display: block;
    width: 100%;
    text-align: center;
    font-size: 16px;
    margin-bottom: 5px;
}
.btPayment .price{
	color: #20A53A;
	font-size: 22px;
	margin: 0 5px;
	
}
.bt-form{
	overflow: hidden;
}
.boxtext{
	line-height: 32px;
	margin-top: -17px;
	text-align: center;
	border-bottom: #eee 1px solid;
	height: 39px;
	font-size: 14px;
}
</style>
<div class="maks" style="display: none"></div>
<div class="boxshow" style="display: none;">
	<div>
		<div class="boxtext">
			<span>未开通此服务，如需使用请开通企业运维版。</span>
		</div>
		<div class="btvipinfo" style="width: 170px;padding-left: 20px">
			<p style="height: 25px">1、一对一运维人员对接</p>					  
			<p style="height: 25px">2、提供每月3次运维服务</p>					  
			<p style="height: 25px">3、双重安全隔离登录</p>					
		</div>
		<div class="btPayment">
			<span class="t2">企业运维版<span class="price">98</span>元/月</span>					  
			<button class="btn btn-success btn-sm" style="width:80%" onclick="window.open('https://www.bt.cn/admin/index.html')">立即开通</button>
		</div>					
	</div>
</div>
<div class="bt-form">
	<div class="bt-w-main">
		<div class="bt-w-menu">
			<p class="bgw">密钥</p>
			<p>面板设置</p>
			<p>面板登录日志</p>
			<p>SSH设置</p>
			<p>SSH日志管理</p>
		</div>
		<div class="bt-w-con pd15">
			<div class="soft-man-con viewZoo">
				<p class="status" style="margin-top:10px;margin-left:10px;height: 80px;margin-bottom:15px;">
					<span style="float:left;margin-top:-5px">密钥：</span>
					<textarea class="bt-input-text" name="token" readonly="readonly" style="background-color: #eee;width:400px;height:80px;padding: 8px 15px;" placeholder="密钥已隐藏..."></textarea>
				</p>
             	<input type="button"  class="btn btn-success btn-sm" name="ButtonShow" style="margin-left:52px;width:100px" onclick="sagelogin.tokenShow()" value="显示密钥" />
				<ul style="margin: 15px 5px;padding-left: 70px;list-style-type: disc;line-height: 25px;">
					<li>宝塔企业运维后台连接您的服务器需要此密钥，请妥善记录并保存</li>
					<li>一但密钥丢失，可能导致您无法登录服务器</li>
				</ul>
			</div>
			<div class="soft-man-con viewOne" style="display: none;">
				<p class="status">当前状态：
					<span>开启</span>
					<span style="color: #20a53a; margin-left: 3px;" class="glyphicon glyphicon glyphicon-play"></span>
					<span style="color: red; margin-left: 3px; display: none" class="glyphicon glyphicon-pause"></span>
				</p>
				<div class="sfm-opt">
					<button class="btn btn-default btn-sm bts-danger"  onclick="sagelogin.Panel_Admin()">清除面板登录限制IP</button>
					<button class="btn btn-default btn-sm bts-safety" onclick="sagelogin.Add_view('面板白名单',true)">添加白名单</button>
				</div>
				<div class="whiteList-table divtable" style="overflow-x: hidden;height: 420px">
					<table class="table table-hover" style="max-height: 380px; overflow: auto;">
					<thead>
						<tr>
							<th>IP地址</th>
							<th style="text-align: right;">操作</th>
						</tr>
					</thead>
					<tbody id="whiteListOne"></tbody>
				</table>
				</div>
			</div>
			<div class="soft-man-con viewTwo" style="display: none">
				<div class="whiteList-table divtable">
					<table class="table table-hover" style=" max-height: 380px; overflow: auto;">
						<thead>
							<tr>
								<th>操作记录</th>
								<th>操作时间</th>
							</tr>
						</thead>
						<tbody id="whiteListTwo"></tbody>
					</table>
				</div>
			</div>
			<div class="soft-man-con viewThree" style="display: none">
				<p class="status">当前状态：
					<span>开启</span>
					<span style="color: #20a53a; margin-left: 3px;" class="glyphicon glyphicon glyphicon-play">
					</span>
					<span style="color: red; margin-left: 3px; display: none" class="glyphicon glyphicon-pause"></span>
				</p>
				<div class="sfm-opt">
					<button class="btn btn-default btn-sm bts-danger"  onclick="sagelogin.Panel_Admin()">清除SSH登录限制IP</button>
					<button class="btn btn-default btn-sm bts-safety" onclick="sagelogin.Add_view('SSH白名单',false)">添加白名单</button>
				</div>
				<div class="whiteList-table divtable" style="overflow-x: hidden;height: 420px">
					<table class="table table-hover" style="max-height: 380px; overflow: auto;">
					<thead>
						<tr>
							<th>IP地址</th>
							<th style="text-align: right;">操作</th>
						</tr>
					</thead>
					<tbody id="whiteListThree"></tbody>
				</table>
				</div>
			</div>
			<div class="soft-man-con viewFour" style="display: none">
				<div class="btnclick">
					<label class="btnTitle">日志分类</label>
					<div class="btn-group">
						<input type="submit" name="btnOne" class="btn btn-success" onclick="sagelogin.SSH_Defense_List(0)" value="已防御" />
						<input type="submit" name="btnTwo" class="btn btn-default" onclick="sagelogin.SSH_Defense_List(1)" value="入侵日志"/>
						<input type="submit" name="btnThree" class="btn btn-default" onclick="sagelogin.SSH_Defense_List(2)" value="登录日志"/>
					</div>
				</div>
				<div class="whiteList-table divtable" style="overflow-x: hidden;height: 470px;">
					<table class="table table-hover" style="max-height: 380px; overflow: auto;">
					<thead>
						<tr>
							<th>源IP地址</th>
							<th>用户</th>
							<th style="text-align: right;">登录时间</th>
						</tr>
					</thead>
					<tbody id="whiteListFour"></tbody>
				</table>
				</div>
			</div>
		</div>
	</div>
</div>
<script type="javascript/text">
//宝塔安全登录
$(function(){
	$(".bt-w-menu p").click(function(){
		$(this).addClass("bgw").siblings().removeClass("bgw");
		$('.bt-w-con .soft-man-con').hide().eq($(this).index()).show();
		switch($(this).index()) {
			case 0:
				break;
			case 1:
				sagelogin.Panel_White_List();
			break;
			case 2:
				sagelogin.Panel_journal();
			break;
			case 3:
				sagelogin.SSH_White_List();
			break;
			case 4:
				sagelogin.SSH_Defense_List(0);
			break;
		}
	});
	layer.load();
	$.get('/plugin?action=a&name=safelogin&s=GetServerInfo',function(data) {
		layer.closeAll('loading');
		if (data.status) {
			$('.boxshow').hide();
			$('.maks').hide();
		}else{
			$('.boxshow').show();
			$('.maks').show();
		}
	});
});
var sagelogin = new Object();
	sagelogin = {
		Addview:'',
		SSHlogList:'',
		PanelLogList:'',
		// SSH管理
		SSH_Admin:function(){
			var confirm = layer.confirm('确定清除面板登录限制IP地址？',{icon: 1}, {
			  btn: ['确认','取消'],
			}, function(){
			 	$.get('/plugin?action=a&name=safelogin&s=close_ssh_limit',function(data) {
				if (data.status) {
					layer.msg(data.msg,{icon:1});
					sagelogin.SSH_White_List();
				}else{
					layer.msg(data.msg,{icon:2});
				}
			});
			}, function(){
			 	layer.close(confirm);
			});
		},
		tokenShow:function(){
			var inputPwd = layer.open({
			  type: 1,
			  title: '验证面板密码',
			  shadeClose: true,
			  shade: 0.3,
			  area: ['380px', '190px'],
			  btn:['确定','取消'],
			  content:'<div class="Add_view" style="height:90px"><label>面板密码:</label><input name="panel_pwd" class=" bt-input-text"  type="password"></div>',
			  yes:function(){
			  	var passwordStr = $("input[name='panel_pwd']").val();
			  	var index = layer.load(0, {shade: false});
				$.post('/plugin?action=a&name=safelogin&s=GetServerToken',{password:passwordStr},function(token) {
					layer.close(index);
					if(token.status === false){
						layer.msg(token.msg,{icon:2});
						return;
					}
					layer.close(inputPwd);
					$("textarea[name='token']").val(token);
				});
			  },
			  btn2:function(){
			  	layer.close(inputPwd);
			  }
			}); 
       },
		// SSH白名单——列表
		SSH_White_List:function(){
			var index = layer.load(0, {shade: false});
			$.get('/plugin?action=a&name=safelogin&s=get_ssh_limit','',function(data){
				$('#whiteListThree').empty();
				var List = '';
				if (data.length == 0){
					$('.viewThree .status span:eq(0)').html('关闭');
					$('.viewThree .glyphicon-pause').show();
					$('.viewThree .glyphicon-play').hide();
				}else {
					$('.viewThree .status span:eq(0)').html('开启');
					$('.viewThree .glyphicon-pause').hide();
					$('.viewThree .glyphicon-play').show();
				}
				for (var i = 0; i < data.length; i++) {
					List = List + '<tr><td>'+ data[i] +'</td><td style="text-align:right;"><a href="javascript:;" ip-val="'+ data[i] +'" onclick="sagelogin.SSH_Del_White_List(event)" style="color:red">删除</a></td></tr>'
				}
				$('#whiteListThree').append(List);
				layer.close(index);
			});
		},
		// SSH白名单——删除
		SSH_Del_White_List:function(ev){
			var ip = ev.currentTarget.getAttribute('ip-val');
			var confirm = layer.confirm('确定删除IP['+ ip +']限制地址？', {
			  btn: ['确认','取消'] //按钮
			}, function(){
			 	$.get('/plugin?action=a&name=safelogin&s=remove_ssh_limit',{ip:ip},function(data){
			 		if (data.status) {
			 			sagelogin.SSH_White_List();
			 			layer.msg(data.msg,{icon:1});
			 		}else {
			 			layer.msg(data.msg,{icon:2});
			 		}
			 	});
			}, function(){
			 	layer.close(confirm);
			});
		},
		// SSH白名单——添加
		SSH_Add_White_List:function(ip){
			$.post('/plugin?action=a&name=safelogin&s=add_ssh_limit',{ip:ip},function(data){
				layer.close(sagelogin.Addview);
				if (data.status) {
					sagelogin.SSH_White_List();
					layer.msg(data.msg,{icon:1});
				}else{
					layer.msg(data.msg,{icon:2});
				}
			});
		},
		// SSH日志管理
		SSH_Defense_List:function(status){
			$('.btnclick input').removeClass('btn-success').addClass('btn-default');
			$('.btnclick input').eq(status).addClass('btn-success').removeClass('btn-default');
			if (sagelogin.SSHlogList == '') {
				$.get('/plugin?action=a&s=get_ssh_errorlogin&name=safelogin',function(data){
					sagelogin.SSHlogList = data;
					sagelogin.DefenseFor(sagelogin.SSHlogList.defense);
				});
			}else{
				switch(status) {
					case 0:
						sagelogin.DefenseFor(sagelogin.SSHlogList.defense);
						break;
					case 1:
						sagelogin.DefenseFor(sagelogin.SSHlogList.intrusion);
						break;
					case 2:
						sagelogin.DefenseFor(sagelogin.SSHlogList.success);	
						break;
				}
			}
		},
		// SSH日志渲染模板
		DefenseFor:function(data){
			var List = '';
			$('#whiteListFour').empty();
			for (var i = data.length - 1; i >= 0; i--) {
				List = List + '<tr><td>'+data[i].address+'</td><td>' + data[i].user + '</td><td style="text-align:right">'+ data[i].date+'</td></tr>'
			}
			$('#whiteListFour').append(List);
		},
		// 面板管理
		Panel_Admin:function(){
			var confirm = layer.confirm('确定清除面板登录限制IP地址？', {
			  btn: ['确认','取消'] //按钮
			}, function(){
			 	$.get('/plugin?action=a&name=safelogin&s=close_panel_limit',function(data) {
					if (data.status) {
						layer.msg(data.msg,{icon:1});
						sagelogin.Panel_White_List();
					}else{
						layer.msg(data.msg,{icon:2});
					}
				});
			}, function(){
			 	layer.close(confirm);
			});
			
		},
		// 面板白名单——列表
		Panel_White_List:function(){
			$.get('/plugin?action=a&name=safelogin&s=get_panel_limit','',function(data){
				$('#whiteListOne').empty();
				var List = '';
				if (data.length == 0){
					$('.viewOne .status span:eq(0)').html('关闭');
					$('.viewOne .glyphicon-pause').show();
					$('.viewOne .glyphicon-play').hide();
				}else {
					$('.viewOne .status span:eq(0)').html('开启');
					$('.viewOne .glyphicon-pause').hide();
					$('.viewOne .glyphicon-play').show();
				}
				for (var i = 0; i < data.length; i++) {
					List = List + '<tr><td>'+ data[i] +'</td><td style="text-align:right;"><a href="javascript:;" ip-val="'+ data[i] +'" onclick="sagelogin.Panel_Del_White_List(event)" style="color:red">删除</a></td></tr>'
				}
				$('#whiteListOne').append(List);
			});
		},
		// 面板白名单——删除
		Panel_Del_White_List:function(ev){
			var ip = ev.currentTarget.getAttribute('ip-val');
			var confirm = layer.confirm('确定删除IP['+ ip +']限制地址？', {
			  btn: ['确认','取消'] //按钮
			}, function(){
			 	$.get('/plugin?action=a&name=safelogin&s=remove_ssh_limit',{ip:ip},function(data){
			 		if (data.status) {
			 			sagelogin.Panel_White_List();
			 			layer.msg(data.msg,{icon:1});
			 		}else {
			 			layer.msg(data.msg,{icon:2});
			 		}
			 	});
			}, function(){
			 	layer.close(confirm);
			});
		},
		// 面板白名单——添加
		Panel_Add_White_List:function(ip){
			$.post('/plugin?action=a&name=safelogin&s=add_panel_limit', {ip: ip}, function(data) {
				layer.close(sagelogin.Addview);
				if (data.status) {
					sagelogin.Panel_White_List();
					layer.msg(data.msg,{icon:1});
				}else{
					layer.msg(data.msg,{icon:2});
				}
			});
		},
		// 面板日志——列表
		Panel_journal:function(){
			var index = layer.load(0, {shade: false});
			$.get('/plugin?action=a&name=safelogin&s=get_login_log',function(data){
				$('#whiteListTwo').empty();
				var List = '';
				sagelogin.PanelLogList = data;
				for (var i = sagelogin.PanelLogList.length - 1; i >= 0; i--) {
					List = List + '<tr><td>'+ sagelogin.PanelLogList[i].log +'</td><td style="text-align:right;">'+ sagelogin.PanelLogList[i].addtime +'</tr>';
				}
				$('#whiteListTwo').append(List);
				layer.close(index);
			});
		},
		// IP正则:192.168.1.0/24
		CheckIP:function(ip) {
		    var reg = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])(\/\d{1,2})?$/;
		    return reg.test(ip);
		},
		CheckIPTwo:function(ip) {
		    var reg = /^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$/gi;
		    return reg.test(ip);
		},
		// 添加表单效验
		addViewVul:function(status){
			var ip = $('.addViewVul');
			if (status) {
				console.log(sagelogin.CheckIP(ip.val()));
				if(sagelogin.CheckIPTwo(ip.val())){
					ip.addClass('correct').removeClass('error');
					return true;
				}else {
					ip.addClass('error').removeClass('correct');
					return false;
				}
			}else{

				if(sagelogin.CheckIP(ip.val())){
					ip.addClass('correct').removeClass('error');
					return true;
				}else {
					ip.addClass('error').removeClass('correct');
					return false;
				}
			}
		},
		// 添加界面
		Add_view:function(title,status){
			var _this = this;
			var text = ''
			var statuss = true;
			if (status) {
				text = '';
				statuss = true;
			}else{
				text = '<p style="color:red;margin: 5px 0px 0px 67px;font-size: 14px;">支持IP段，如:192.168.1.0/24</p>';
				statuss = false;
			}
			sagelogin.Addview = layer.open({
			  type: 1,
			  title: title,
			  shadeClose: true,
			  shade: 0.1,
			  area: ['380px', '200px'],
			  btn:['确定','取消'],
			  content:'<div class="Add_view"><label>IP地址:</label><input class="addViewVul bt-input-text" onchange="sagelogin.addViewVul('+ statuss +')" type="text">'+ text +'</div>',
			  yes:function(){
			  	if (sagelogin.addViewVul(statuss)) {
				  	if(status){
				  		sagelogin.Panel_Add_White_List($('.addViewVul').val());
				  	}else{
				  		sagelogin.SSH_Add_White_List($('.addViewVul').val());
				  	}
			  	}else{
			  		layer.msg('请输入合法的IP地址',{icon:2})
			  	}
			  },
			  btn2:function(){
			  	layer.close(sagelogin.Addview);
			  }
			}); 
			$('.addViewVul').focus();
		}
	}
	
</script>